'use strict'


// 引入 模块 
let
    // 引入 模板模块 用于我们重构我们想要的模板模块
    nunjucks = require('nunjucks');

// 实例化 模板模块的 envrionment 环境
function creatEnv(path, options) {
        path = path || 'views'
        options = options || {}
    let
        // 配置的选项 
        envOptions = {
            "autoescape": options.autoescape === undefined ? true : options.autoescape,
            "watch": options.watch === undefined ? true : options.watch,
            "throwOnUndefined": options.throwOnUndefined === undefined ? true : options.throwOnUndefined,
            "noCache": options.noCache === undefined ? true : options.noCache
        },
        // 实例化 envrionment环境
        env = nunjucks.configure(path,envOptions);
    // 返回
    return env
};

// 暴露 实例化的 env 环境 并重构方法变成我们想要的方式调用
module.exports = async (ctx,next)=>{
    // 重构方法
    ctx.render = function(view,model){
        let env = creatEnv();
        ctx.body = env.render(view,model)
    }
    // 调用下一个中间件
    await next();
}